package com.chushouya.common.constant;

import com.general.framework.core.lang.Lists;
import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 特殊规则常量定义

 * a外观成色
 *  无使用痕迹带全套原装配件
 *  很少使用，完美无使用痕迹
 *  经常使用，完好有轻微划伤
 *  外壳有磕碰/裂缝/缺失/变形/刻字
 *  经常使用，外壳有轻微磕碰或掉漆

 * b屏幕显示
 *  显示正常完好
 *  经常使用，显示正常细微色差
 *  换过屏，非原装屏
 *  显示异常/漏液/不显示/断线
 *  显示透图，发黄

 * c屏幕外观
 *  有贴膜，无使用痕迹
 *  屏幕有轻微划痕
 *  经常使用，屏幕有严重划伤
 *  屏幕有碎角/碎裂/开胶

 * d维修拆机史
 *  无拆机无修理
 *  拆过机，但没有进行维修
 *  有拆机维修，未涉及到主板
 *  修理过主板

 * e功能问题
 *  按键不正常
 *  面容无法识别
 *  通话不正常
 *  触摸功能不正常
 *  拍照摄像不正常
 *  充电不正常
 *  wifi不正常
 *  屏幕进灰
 *  机身进水或受潮
 *  机身弯曲
 *  维修主板
 *
 */
@Slf4j
public class EvaluateConstants {
    /**
     * 适用于特殊规则的类目
     * 手机/平板/笔记本
     */
    private static final List<Long> evaluateSpecialRuleCategoryId = Lists.asList(100001L, 100002L, 100004L);

    /**
     * 估价流程选SKU是否需要校验SKU组合存在性的类目（灰色不可选）
     * 笔记本
     */
    public static final List<Long> evaluateValidateSkuCategoryId = Lists.asList(100004L);

    public static final Long notebookCategoryId = 100004L;

    // 完好-外观成色
    private static final List<String> good_waiguanchengse = Lists.asList("无使用痕迹带全套原装配件", "很少使用，完美无使用痕迹");
    // 中等-外观成色
    public static final List<String> general_waiguanchengse = Lists.asList("较少使用，有轻微划伤", "经常使用，外壳有轻微磕碰或掉漆");
    // 严重-外观成色
    public static final List<String> bad_waiguanchengse = Lists.asList("外壳有磕碰/裂缝/缺失/变形/刻字");


    // 完好-屏幕显示
    private static final List<String> good_pingmuxianshi = Lists.asList("显示正常完好");
    // 中等-屏幕显示
    private static final List<String> general_pingmuxianshi = Lists.asList("显示正常有细微色差");
    // 严重-屏幕显示
    public static final List<String> bad_pingmuxianshi = Lists.asList("换过屏，原装屏", "换过屏，非原装屏", "显示异常/漏液/不显示/断线", "显示透图，发黄", "有花屏/漏液/断线");

    // 完好-屏幕外观
    private static final List<String> good_pingmuwaiguan =  Lists.asList("有贴膜，无使用痕迹");
    // 中等-屏幕外观
    private static final List<String> general_pingmuwaiguan = Lists.asList("屏幕有轻微划痕", "经常使用，屏幕有严重划伤");
    // 严重-屏幕外观
    public static final List<String> bad_pingmuwaiguan = Lists.asList("屏幕有碎角/碎裂/开胶", "屏幕有裂痕/缺角/碎裂");

    // 维修
    public static final List<String> repair = Lists.asList("修理过主板", "维修过主板", "维修主板", "有拆机维修，未涉及到主板", "拆过机，但没有进行维修");

    // 新版本功能
    public static final List<String> new_function = Lists.asList(
            "振动/闪光灯异常",  "主板维修或扩容",
            "指纹/面部识别异常", "重力/指南针等感应器异常",
            "充电口/耳机口异常", "电池严重鼓包漏液",
            "有维修痕迹", "机身弯曲",
            "拍照异常/画面抖动/无法对焦", "触摸局部失灵/延迟",
            "听筒/麦克风/扬声器异常", "信号异常/无法通话",
            "WIFI/蓝牙/NFC/红外异常", "机身进水/主板水渍"
    );

    // 老版本功能
    public static final List<String> old_function = Lists.asList(
            "按键不正常",
            "面容无法识别",
            "通话不正常",
            "触摸功能不正常",
            "拍照摄像不正常",
            "充电不正常",
            "wifi不正常",
            "屏幕进灰",
            "机身进水或受潮",
            "机身弯曲",
            "电池健康度＜85%",
            "电池健康度≤90%",
            "重力感应不正常",
            "指南针功能不正常"
    );

    // 新版本功能-电池选项
    public static final List<String> battery = Lists.asList("85%≤电池健康度≤90%", "电池健康度<85%");


    public static boolean doSpecialRuleMatch(Long categoryId) {
        return evaluateSpecialRuleCategoryId.contains(categoryId);
    }


    /**
     * 外观成色/屏幕显示/屏幕外观
     */
    public static List<String> getAllFacadeItemNames(){
        return Lists.asList("外观成色", "屏幕显示", "屏幕外观");
    }

    public static String getFunctionItemName(){
        return "功能问题（可多选，如无功能问题可不选）";
    }

    public static List<String> getAllRepairItems() {
        return repair;
    }

    public static List<String> getAllBadFacadeItems(){
        List<String> allBadItemValueList = Lists.newArrayList();
        allBadItemValueList.addAll(bad_waiguanchengse);
        allBadItemValueList.addAll(bad_pingmuxianshi);
        allBadItemValueList.addAll(bad_pingmuwaiguan);
        return allBadItemValueList;
    }

    public static List<String> getAllGeneralFacadeItems(){
        List<String> allGeneraltemValueList = Lists.newArrayList();
        allGeneraltemValueList.addAll(general_waiguanchengse);
        allGeneraltemValueList.addAll(general_pingmuxianshi);
        allGeneraltemValueList.addAll(general_pingmuwaiguan);
        return allGeneraltemValueList;
    }

    public static List<String> getAllGoodFacadeItems(){
        List<String> allGoodtemValueList = Lists.newArrayList();
        allGoodtemValueList.addAll(good_waiguanchengse);
        allGoodtemValueList.addAll(good_pingmuxianshi);
        allGoodtemValueList.addAll(good_pingmuwaiguan);
        return allGoodtemValueList;
    }

    /**
     * 功能问题-常规
     */
    public static List<String> getAllNewFunctionItems() {
        return new_function;
    }

    public static List<String> getAllFunctionItems() {
        List<String> allFunction = Lists.newArrayList();
        allFunction.addAll(new_function);
        allFunction.addAll(battery);
        allFunction.addAll(old_function);
        return allFunction.stream().distinct().collect(Collectors.toList());
    }

    /**
     * 功能问题-电池健康
     */
    public static List<String> getAllBatteryItems() {
        return battery;
    }


}
